// 自定义模块并根据需要导出

let toInteger = function( float ){
    console.log( '将浮点数转换为整数' );
    return float | 0 ;
}

// 计数符号
const digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 

let parse = function( origin , radix = 10 ){
    console.log( '解析字符串为整数' );
    let sum = 0 ;
    for( let i = origin.length - 1 , n = 0 ; i >= 0 ; i-- , n++ ){
        // 从字符串中获取指定单个字符
        let char = origin.charAt( i ); 
        // 去 digits 中寻找 char 首次出现的位置
        let m = digits.indexOf( char );
        sum += m * ( radix ** n ) ;
    }
    return sum ;
}

let toString = function( integer , radix = 10 ){
    let s = '' ;
    let x = integer ;
    while( x > 0 ){
        let y = x % radix ; // 整除求余数
        // 将余数当作字符串索引获取相应的字符
        let char = digits[ y ];
        s = char + s ;
        x = toInteger( x / radix ) ; // 整除求商取整
    }

    return s ;
}

/*
// 使用 "exports.属性名" 形式可以将单个的变量或函数导出
// 或者使用 "module.exports.属性名" 也可以实现
exports.toInteger = toInteger ;
exports.parse = parse ;
console.log( exports === module.exports ); // true
console.log( module.exports );
*/

// exports = { toInteger , parse }
// 如果是将整个对象导出则应该使用 module.exports 而不是 exports
module.exports = { toInteger , parse , toString }